<?php

/**
* 后台主题控制面板
* 关于名称的约定：所有设置页面中，必须有对应的页面名称，即add_menu_page,add_submenu_page,$_GET['page'],options['x']中，这些page值必须是对应的，一个page值产生一个组结果。
*/


function theme_add_setting(){
	global $options,$prefix;
	if(!empty($_POST)):
		$page = @$_POST['page'];
		$action = @$_POST['action'];
		if($page == @$_GET['page'] && $action == 'update-theme'){
			check_admin_referer('update-theme-setting');
			$option = $options[$page];
			foreach($option as $value) {
				if(!empty($_REQUEST[$value['id']])) 
					update_option($prefix.$value['id'],$_REQUEST[$value['id']]) 
					or add_option($prefix.$value['id'],$_REQUEST[$value['id']]);
				else delete_option($prefix.$value['id']);
			}
			wp_redirect('admin.php?page='.$page.'&saved=true');
			exit;
		}
	endif;
	$admin_ico = '';
	add_menu_page('主题设置','主题设置','edit_themes','general_setting','general_setting',$admin_ico,'3');
	// http://codex.wordpress.org/Function_Reference/add_menu_page
	add_submenu_page('general_setting','广告设置','广告设置','edit_themes','ad_setting', 'ad_setting');
}
add_action('admin_menu', 'theme_add_setting');

function general_setting(){
	global $options;
	// 对应上面add_menu_page中的setting_index，即点击menu后的默认后台页
	if(@$_GET['saved'] == 'true')echo '<div id="message" class="updated fade"><p><strong>主题设置已保存。</strong></p></div>';
	admin_panel($options['general_setting'],'基本设置');
}

function ad_setting(){
	global $options;
	//基本设置
	if(@$_GET['saved'] == 'true')echo '<div id="message" class="updated fade"><p><strong>主题设置已保存。</strong></p></div>';
	admin_panel($options['ad_setting'],'广告设置');
}

////////////////////////////////////////////////////////////////////////////
/**
* 下面这个函数即显示出面板的函数，它有两个参数，第一个是$options，在$_options.php中撰写
* 在上面的函数中定义$options，再调用该函数，即可显示控制面板
* $tabmenu是选项卡的名称，是一个数组，例如$tabmenu = array('首页','栏目','内容');
*/

function admin_panel($options = array(),$title){
	global $prefix;
?>
<div class="wrap">
<form method="post">
	<h2 class="nav-tab-wrapper"><?php echo $title; ?></h2>
<?php
/**
完整的一个页面代码
<div class="metabox-holder">
	<div class="postbox">
		<h3 class="hndle"></h3>
		<div class="inside" style="border-bottom: 1px solid #CCC;margin: 0;padding: 8px 10px;">
			<input type="text" class="regular-text" />
			<input type="radio" />
			<select></select>
			<textarea class="large-text code" style="word-break:break-all;width:80%;" rows="4"></textarea>
		</div>
	</div>
</div>
*/
foreach ((array)$options as $option):
	switch($option['type']):
		case 'metabox_pre':
		echo '<div class="metabox-holder">';
		break;
		case 'postbox_pre':
		echo '<div class="postbox">';
		break;
		case 'hndle_pre':
		echo '<h3 class="hndle">';
		break;
		case 'hndle_end':
		echo '</h3>';
		break;
		case 'inside_pre':
		echo '<div class="inside" style="border-bottom: 1px solid #CCC;margin: 0;padding: 8px 10px;">';
		break;
		///////////////////////
		case 'text':
			echo '<input type="text" class="regular-text" value="'.stripslashes(get_option($prefix.$option['id'])).'" name="'.$option['id'].'" />';
		break;
		case 'redio':
			echo '<input type="radio" value="'.stripslashes(get_option($prefix.$option['id'])).'" name="'.$option['id'].'" />';
		break;
		case 'select':
			echo '<select name="'.$option['id'].'">';
			foreach($option['value'] as $value){
				echo '<option';
				if(get_option($prefix.$option['id']) == $value)echo ' selected="selected"';
				echo '>';
				echo $value;
				echo '</option>';
			}
			echo '</select>';
		break;
		case 'textarea':
			echo '<textarea class="large-text code" style="word-break:break-all;width:80%;" rows="4" name="'.$option['id'].'">'.stripslashes(get_option($prefix.$option['id'])).'</textarea>';
		break;
		///////////////////////
		case 'content':
			echo $option['value'];
		break;
		///////////////////////
		case 'inside_end':
		echo '</div>';
		break;
		case 'postbox_end':
		echo '</div>';
		break;
		case 'metabox_end':
		echo '</div>';
		break;
		default:'';
	endswitch;
endforeach;
?>
	<p class="submit">
		<input name="save" type="submit" class="button-primary" value="保存所有更改" />
		<input type="hidden" name="action" value="update-theme" />
		<input type="hidden" name="page" value="<?php echo $_GET['page']; ?>" />
		<?php wp_nonce_field('update-theme-setting'); ?>
	</p>
</form>
</div>
<?php }